// ============================================================================
//
// Graph framework by Aurelien Moreau aurelien.moreau@gmail.com
// Modified by Pierre CHATEL chatelp@gmail.com
// Distributed under LGPL
// Copyright (C) Aurelien Moreau, 2008, 2009. All rights reserved
//
// ============================================================================

package com.thalesgroup.graphFramework.core;

import java.util.Iterator;

import com.thalesgroup.graphFramework.core.utils.DOTTools;

public interface Graph<V, E> {

	public Edge<V, E> getEdge(Vertex<V, E> src, Vertex<V, E> tgt);

	public Iterator<Vertex<V,E>> getVertices();
	public int getVerticesSize();
	
	public Iterator<Edge<V,E>> getEdges();
	public int getEdgesSize();

	public Vertex<V, E> getVertex(int index);

	public Edge<V, E> getEdge(int index);
	
	/**
	 * Ajout pierre du 14/08/08
	 * @param serializer
	 */
	void setSerializer(DOTTools<V, E> serializer);
	
	/**
	 * Ajout pierre du 14/08/08
	 * @param vertex
	 * @return
	 */
	Vertex<V, E>[] getAdjacentVertices(Vertex<V, E> source);
}
